from typing import List
from pydantic import BaseModel, Field

from llama_index.core import SimpleDirectoryReader
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

from llama_index.core import SimpleDirectoryReader
from llama_index.core.node_parser import SimpleNodeParser
from llama_index.core import GPTVectorStoreIndex, VectorStoreIndex

from llama_index.core import Settings

 # HuggingFaceLLM：用于运行Hugging Face的预训练语言模型
from llama_index.core import Settings, SimpleDirectoryReader, VectorStoreIndex
import chromadb

from llama_index.vector_stores.chroma import ChromaVectorStore
from llama_index.core import StorageContext, load_index_from_storage
from llama_index.llms.deepseek import DeepSeek


from llama_index.core import QueryBundle

# import NodeWithScore
from llama_index.core.schema import NodeWithScore

# Retrievers
from llama_index.core.retrievers import (
    BaseRetriever,
    VectorIndexRetriever,
    KeywordTableSimpleRetriever,
)

# 连接Chroma数据库

llm = DeepSeek(model="deepseek-chat", api_key="sk-605e60a1301040759a821b6b677556fb")
Settings.llm = llm

from zhipuai import ZhipuAI
from llama_index.embeddings.zhipuai import ZhipuAIEmbedding

embeddings = ZhipuAIEmbedding(
    model="embedding-2",
    api_key="f387f5e4837d4e4bba6d267682a957c9.PmPiTw8qVlsI2Oi5"
    # With the `embedding-3` class
    # of models, you can specify the size
    # of the embeddings you want returned.
    # dimensions=1024
)
Settings.embed_model = embeddings
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

from llama_index.core import StorageContext

import chromadb
import os


print('ss')

import chromadb
from llama_index.vector_stores.chroma import ChromaVectorStore
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, StorageContext

db = chromadb.PersistentClient(path="chroma_database")
chroma_collection = db.get_or_create_collection("my_chroma_store")
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)
storage_context = StorageContext.from_defaults(vector_store=vector_store)

documents = SimpleDirectoryReader("files").load_data()
index = VectorStoreIndex.from_documents(documents=documents, storage_context=storage_context)

results = chroma_collection.get()
print(results)

index = VectorStoreIndex.from_vector_store(vector_store=vector_store, storage_context=storage_context)
